package utils.others 
{
	import flash.display.BitmapData;
	import flash.geom.Matrix;
	import flash.utils.Dictionary;
	/**
	 * ...
	 * @author WLDragon 2014-04-16
	 */
	public class TextureUtil 
	{
		
		public function TextureUtil() 
		{
			textureMap = new Dictionary();
		}
		
		/**
		 * 初始化纹理集
		 * @param	data 图片数据
		 * @param	w 切片宽度
		 * @param	h 切片高度
		 */
		public function init(data:BitmapData, w:int, h:int):void
		{
			_w = w;
			_h = h;
			
			if (data != null)
			{
				var col:int = data.width / w;
				var row:int = data.height / h;
				
				//缓存图片切片
				var mt:Matrix = new Matrix();
				for (var i:int = 0; i < row; i++)
				{
					for (var j:int = 0; j < col; j++)
					{
						mt.tx = -j * w;
						mt.ty = -i * h;
						var bd:BitmapData = new BitmapData(w, h, false);
						bd.draw(data, mt);
						textureMap[10 * (i+1) + (j+1)] = bd;
					}
				}
			}
		}
		
		/**
		 * 获取纹理资源
		 * 按从左到右，从上到下的序号为
		 * 11 12 13 ...
		 * 21 22 ...
		 * ...
		 * @param	index 序号
		 * @return  切片位图数据
		 */
		public function getData(index:int):BitmapData
		{
			return textureMap[index];
		}
		
		/**单个纹理的宽度*/
		public function get w():int 
		{
			return _w;
		}
		
		/**单个纹理的高度*/
		public function get h():int 
		{
			return _h;
		}
		
		private var textureMap:Dictionary;
		/**单个纹理的宽度*/
		private var _w:int;
		/**单个纹理的高度*/
		private var _h:int;
		
		/**纹理集的列数，因为这里暂时只处理地图的纹理，所以直接静态写死，如果在rewar项目中要用到其他纹理再改进，把该类改多纹理集库*/
		public static const COL:int = 9;
		/**纹理集的行数*/
		public static const ROW:int = 9;
	}

}